{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PET reconstruction module\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The PET reconstruction module, contained in the directory occiput->Reconstruction->PET, contains code for PET \n",
    "reconstruction. The reconstruction module is build on top of the NiftyRec GPU-based ray-tracer for emission and transmission tomograpy. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Organization of the source code\n",
    "The PET reconstruction module contains classes to represent projection and reconstruction data and classes that implement algorithms for static and dynamic PET reconstruction. The source code for PET reconstruction is contained in occiput/Reconstruction/PET and comprises these files: \n",
    "\n",
    "- PET_projection.py ------- Defines classes that represent projection data\n",
    "- PET_raytracer.py  -------- Defines the ray-tracer for the projection and back-projection \n",
    "- PET_scanners.py -------- Defines the scanner geometries. It currently defines a generic geometry and the Siemens mMR\n",
    "- PET_listmode.py --------- Defines methods to load and represent list-mode data and to create sinograms from listmode data\n",
    "- PET_span.py ------------ Defines methods \n",
    "- PET_meshing.py --------- Defines classes to do sinogram binning using the meshing technique \n",
    "- PET.py ------------------ Defines classes for reconstruction, static and dynamic "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Representation of the scanner geometry\n",
    "<img align=\"center\" src=\"./images/geometry.png\" width=\"800\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Representation of PET projection data \n",
    "The representation of PET projection data is based on the geometry described above and it is sparse."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Static PET reconstruction\n",
    "PET.PET_Static_Scan()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sinogram binning\n",
    "Sinogram binning is the process of generating a sinogram (projection data) from the data produced by the scanner. \n",
    "Sinogram binning can be done in two ways in Occiput: \n",
    "\n",
    "- **by mashing** --------- [doc_PET_Meshing.ipynb](doc_PET_Meshing.ipynb)\n",
    "- **by ray-tracing** -----"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
